﻿Imports InterfaceNet_DB
Imports System.Linq
Imports SuporteDominio
Public Class UsuarioDAO
    Implements IUsuario

    Private interDB As New InterfaceNet_DB.interfacenetSuporteEntities


    Public Function BuscarUsuario(parIdUsuario As Integer) As SuporteDominio.Usuario Implements IUsuario.BuscarUsuario
        Try
            interDB.Connection.Open()

        Catch ex As Exception

        Finally
            interDB.Connection.Close()
        End Try

        Return Nothing
    End Function

    Public Function BuscarUsuario(parLogin As String, parSenha As String) As SuporteDominio.Usuario Implements IUsuario.BuscarUsuario

        Dim usuarioEncontrado As New SuporteDominio.Usuario
        Try
            interDB.Connection.Open()
            Dim user = interDB.USUARIOs.FirstOrDefault(Function(x) x.USU_LOGIN.Equals(parLogin) & x.USU_SENHA.Equals(parSenha))
            If Not user Is Nothing Then
                usuarioEncontrado.ATIVO = user.USU_ATIVO
                usuarioEncontrado.EMAIL = user.USU_EMAIL
                usuarioEncontrado.LOGIN = user.USU_LOGIN
                usuarioEncontrado.SENHA = user.USU_SENHA
                usuarioEncontrado.TELEFONE = user.USU_TELEFONE
                usuarioEncontrado.ID_USUARIO = user.USU_ID_USUARIO
            End If
        Catch ex As Exception
        Finally
            interDB.Connection.Close()
        End Try
        Return usuarioEncontrado
    End Function

    Public Function Cadastrar(parUsuario As SuporteDominio.Usuario, parCadastrou As SuporteDominio.Usuario, parDataCadastro As Date) As Boolean Implements IUsuario.Cadastrar
        Try
            interDB.Connection.Open()


        Catch ex As Exception

        Finally
            interDB.Connection.Close()
        End Try
    End Function

    Public Function Excluir(parUsuario As SuporteDominio.Usuario) As Boolean Implements IUsuario.Excluir
        Try
            interDB.Connection.Open()


        Catch ex As Exception

        Finally
            interDB.Connection.Close()
        End Try
    End Function

    Public Function ExisteUsuario(parLogin As String, parSenha As String) As Boolean Implements IUsuario.ExisteUsuario
        Try
            interDB.Connection.Open()
            Dim usuario As InterfaceNet_DB.USUARIO = interDB.USUARIOs.FirstOrDefault(Function(x) x.USU_LOGIN.Equals(parLogin) & x.USU_SENHA.Equals(parSenha))
            Return Not usuario Is Nothing & usuario.USU_ID_USUARIO > 0
        Catch ex As Exception

        Finally
            interDB.Connection.Close()
        End Try
        Return False
    End Function

    Public Function Listar() As List(Of SuporteDominio.Usuario) Implements IUsuario.Listar
        Try
            interDB.Connection.Open()


        Catch ex As Exception

        Finally
            interDB.Connection.Close()
        End Try
    End Function

    Public Function Login(parLogin As String, parSenha As String) As SuporteDominio.Usuario Implements IUsuario.Login
        Try
            interDB.Connection.Open()


        Catch ex As Exception

        Finally
            interDB.Connection.Close()
        End Try
        Return Nothing
    End Function

    Public Function AdicionarPerfilUsuario(parIdUsuario As Integer, parIdPerfil As Integer) As Object Implements IUsuario.AdicionarPerfilUsuario

    End Function

    Public Function AtualizarPerfil(parIdPerfil As Integer, parPerfil As SuporteDominio.Perfil) As Object Implements IUsuario.AtualizarPerfil

    End Function

    Public Function CadastrarPerfil(parPerfil As SuporteDominio.Perfil) As Boolean Implements IUsuario.CadastrarPerfil

    End Function

    Public Function DesativarPerfil(parIdPerfil As Integer) As Boolean Implements IUsuario.DesativarPerfil

    End Function

    Public Function ListarPerfis() As List(Of SuporteDominio.Perfil) Implements IUsuario.ListarPerfis

    End Function

    Public Function Atualizar(parIdUsuario As Integer, parNovoUsuario As SuporteDominio.Usuario) As Object Implements IUsuario.Atualizar

    End Function

    Public Function BuscaPerfil(parIdPerfil As Integer) As SuporteDominio.Perfil Implements IUsuario.BuscaPerfil
        Dim perfil As New SuporteDominio.Perfil
        Try
            interDB.Connection.Open()
            Dim perfilEncontrado As InterfaceNet_DB.PERFIL = interDB.PERFILs.FirstOrDefault(Function(x) x.PER_ID_PERFIL = parIdPerfil)
            perfil.ID_PERFIL = perfilEncontrado.PER_ID_PERFIL
            perfil.NOME_PERFIL = perfilEncontrado.PER_NOME_PERFIL
        Catch ex As Exception
        Finally
            interDB.Connection.Close()
        End Try
        Return perfil
    End Function

    Public Function ValidaUsuarioPerfil(parIdPerfil As Integer, parIdUsuario As Integer) As Boolean Implements IUsuario.ValidaUsuarioPerfil
        Dim result As Boolean = False
        Try
            interDB.Connection.Open()
            Dim lista As New List(Of InterfaceNet_DB.PermissaoPerfil)

            lista = interDB.PermissaoPerfils.ToList()

            result = lista.Count > 0
        Catch ex As Exception
        Finally
            interDB.Connection.Close()
        End Try
        Return result
    End Function
End Class
